import { defineStore } from "pinia";
import type { ConfigState, ThemeConfigProps } from "../interface";
import settings from "@/settings";

// defineStore 调用后返回一个函数，调用该函数获得 Store 实体
export const ConfigStore = defineStore({
  // id: 必须的，在所有 Store 中唯一
  id: "ConfigState",
  // state: 返回对象的函数
  state: (): ConfigState => ({
    show: false,
    // language
    language: "zh-cn",
    // themeConfig
    themeConfig: {
      // 布局切换 ==>  纵向：vertical | 经典：classic | 横向：transverse | 分栏：columns
      layout: "classic",
      // element组件大小
      size: "default",
      // 默认 primary 主题颜色
      primary: "#409EFF",
      // 深色模式
      isDark: false,
      // 灰色模式
      isGrey: false,
      // 色弱模式
      isWeak: false,
      // 折叠菜单
      isCollapse: false,
      // 面包屑导航
      breadcrumb: true,
      // 面包屑导航图标
      breadcrumbIcon: true,
      // 标签页
      tabs: true,
      // 标签页图标
      tabsIcon: true,
      // 页脚
      footer: false,
      // 当前页面是否全屏
      maximize: false,
    },
    theme: settings.theme,
  }),
  getters: {},
  actions: {
    // updateShow
    updateShow(show: boolean) {
      this.show = show;
    },
    // updateLanguage
    updateLanguage(language: string) {
      localStorage.setItem("language", language);
      this.language = language;
    },
    // setThemeConfig
    setThemeConfig(themeConfig: ThemeConfigProps) {
      this.themeConfig = themeConfig;
    },
  },
  // 开启数据缓存
  persist: true,
});
